#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include <time.h>

//Q1 Faire un tableau (on peut s'aider des affichages de la fonction)

//Q2 On doit trouver que la fonction calcule a puissance n

//Q3
int fibo_rec(int n){
    if(n==0||n==1){return 1;} //F0 et F1
    else{return fibo_rec(n-1)+fibo_rec(n-2);}
}

//Q4
int fibo(int n){
    if (n==0||n==1){return 1;}
    //Les deux variables suivantes vont jouer le rôle de Fn-1 et Fn-2. Au début ce sont F0 et F1 
    int fnmoins2 = 1;
    int fnmoins1 = 1;
    
    for(int i=2; i<=n; i+=1){
        int fn = fnmoins1+fnmoins2; //On calcule Fn
        fnmoins2 = fnmoins1; //pour le rang suivant, Fn-2 est Fn-1
        fnmoins1 = fn; //pour le rang suivant, Fn-2 est Fn
    }
    return fnmoins1; //Ici on voudrait renvoyer fn, mais la variable n'existe que dans le for. Cependant fnmoins1 a pris la valeur de fn et elle existe dans toute la fonction.

}

//Q5 On observe un dépassement d'entiers, les valeurs sont trop grandes pour être stockées et passent dans les négatif. À un rang, le calcul renvoie 0 et tous les termes suivant valent également 0.

//Q6

int max_3(){ //Pas d'entrées, on va les lire au clavier
    int x;
    int y;
    int z;
    scanf("%d %d %d", &x, &y, &z); //Ne pas oublier les &
    
    //Calcul du max des 3 :
    if (x>y){
        if (x>z){return x;}
        else {return z;}
    }
    else{
        if (y>z){return y;}
        else {return z;}
    }
}

//Q7
bool couteau_suisse(){
    int a;
    int b;
    int x;
    //On récupère les valeurs au clavier
    scanf("%d %d", &a, &b);
    scanf("%d", &x);
    
    //On fait ce qui est demandé
    if (x==1){ //true = c'est pair et false=c'est impair
        if (a+b%2==0){return true;}
        else{return false;}
    }
    if (x==2){
        if (a*b%2==0){return true;}
        else{return false;}
    }
    if (x==3){//true = c'est positif et false = c'est négatif
        if (a+b>=0){return true;}
        else{return false;}
    }
    if (x==4){
        if (a*b>=0){return true;}
        else{return false;}
    }
}

//Q8
void chaud_froid(){
    int a_deviner = rand() % 100;
    int ecart = 101; //ecart est l'écart entre le dernier essai et la vraie valeur
    while(true){ //Ceci est une boucle infinie, on peut l'arrêter qu'avec un return ou break
        int essai;
        scanf("%d", &essai);
        
        if (essai==a_deviner){
            printf("Bravo tu as trouvé!\n");
            return; //On arrête le jeu
        }
        if (abs(essai-a_deviner)<=ecart){
            printf("Tu chauffes\n");
        }
        else{
            printf("Tu refroidis\n");
        }
        
        ecart = abs(essai-a_deviner);
    }
}

//Q9 (à faire dans le main)

//Le reste on reverra plus tard dans l'année


int main(){
    srand(time(NULL));
    
    //On n'oublie pas de tester que les fonctions écrites marchent
    //printf("%d\n", fibo_rec(5));
    
    //printf("%d\n", fibo(5));
    
    //max_3();
    
    //chaud_froid();
    
    //Q9
    int mat[3][3] = {{3,5,6},{-10,-7,3},{-7,3,78}};
    char mat2[3][3] = {{'a','b','c'},{'d','e','f'},{'g','h','i'}};
    
}
